package com.shangke.corejava.ch6.Outer;
//在一个java文件中，只能有一个类是public类型的，且类的名称必须与文件名相同（大小写敏感，大小写相同）
//在java类中，如果编写了静态代码块(static)，代码块和构造器；在实例化对象时的执行先后顺序：静态代码块-->代码块-->构造方法
public class Outer {
	// 实例变量--实例属性 -实例属性只跟对象相关
	private int id;
	private String nameString;

	// 静态变量 --类变量 --类属性是全局属性，与类相关
	static String man = "男";
	static String woman = "女";

	public Outer() {
		System.out.println("outer 构造方法");
	}

	{
		// 在一个java类中，可以编写代码块
		// 代码块是跟实例相关的，在执行构造方法前执行
		System.out.println("java 代码块");
	}

	static {
		// 在java类中，可以编写静态代码块
		// 静态代码块是跟类相关的
		System.out.println("java 静态代码块");
	}

	public class Inner {
		// 实例变量
		// 类常量
		// 常量
		// 方法
		// 代码块
		// 内部类不能编写静态代码
		{

		}

		public class Inner2 {
			// 内部类可以支持多级嵌套
		}

		// 特殊的内部类有一种情况较匿名内部类
		// 在使用new关键词实例化接口或抽象类时，可以编写成匿名内部类
		Runnable runnable = new Runnable() {
			@Override
			public void run() {
				// TODO Auto-generated method stub
			}
		};// 这个大括号没有名字，是个匿名类

	}

	public class Inner3 {
		// 在一个类中可以嵌套多个内部类
	}
}

// 在一个java文件中可以编写多个java类（外部类）---上面的java类有public，这里没有
class Outer2 {

}
